package com.bbmall.dwd;

import com.bbmall.SparkSessionUtil;
import org.apache.spark.sql.SparkSession;

/**
 * 产品维度表抽取到DWD
 */
public class OdsToDwdDimProduct {
    public static void main(String[] args) {
        // 1. 初始化SparkSession
        SparkSession spark = SparkSessionUtil.getSparkSession("ODS_TO_DWD_DIM_PRODUCT");

        try {
            // 2. 编写SQL：从ODS全量抽取，映射到DWD字段（取ODS最新dt分区数据）
            String sql = "INSERT OVERWRITE TABLE dwd.dwd_dim_product PARTITION (dt) " +
                    "SELECT " +
                    "  product_code,      -- 商品编码（直接映射）" +
                    "  product_name,          -- 商品名称（直接映射）" +
                    "  product_category,      -- 商品类别（直接映射）" +
                    "  brand,                 -- 品牌（直接映射）" +
                    "  supplier_code,         -- 供应商编码（直接映射）" +
                    "  is_active,             -- 是否有效（直接映射）" +
                    "  created_time,          -- 创建时间（直接映射）" +
                    "  updated_time,          -- 更新时间（直接映射）" +
                    "  dt                     -- 分区字段（继承ODS的dt）" +
                    "FROM ods.ods_product_info " +
                    "WHERE dt = (SELECT MAX(dt) FROM ods.ods_product_info);"; // 取ODS最新分区数据

            // 3. 执行SQL
            spark.sql(sql);
            System.out.println("商品维度表（dwd_dim_product）数据抽取完成！");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 4. 关闭SparkSession
            if (spark != null) {
                spark.stop();
            }
        }
    }
}